CNN backpropagation

Average Pooling
Max Pooling
Conv Layer

흘러들어온 그래디언트 행렬(2x2 크기)을 conv layer를 만들 때 썼던 필터가 슬라이딩하면서 값을 구한다는 겁니다! 대신 필터 요소의 순서를 정반대로 바꿔서요. 예컨대 빨-파-노-초 필터를 초-노-파-빨 필터로 바꿔서 그래디언트행렬에 합성곱을 수행해주면 입력벡터에 대한 그래디언트를 구할 수 있습니다. 가령 x11의 그래디언트는 w1(필터에서 빨간색 요소) x d11이라고 설명드린 바 있는데요, 위 그림 오른쪽에 좌측 상단을 보시면 이것과 정확히 일치하는 것을 알 수가 있습니다. 마찬가지로 x22의 그래디언트도 흘러들어온 그래디언트 행렬에 초-노-파-빨 필터 사이의 합성곱 결과와 동일합니다.

그럼 필터의 그래디언트는 어떻게 구하게 될까요? 흘러들어온 그래디언트 행렬의 첫번째 요소인 d11은 x11x12x21x22와 연결되어 있는 걸 확인할 수 있습니다. 계산그래프를 그려서 설명드렸던 것처럼 필터의 그래디언트는 흘러들어온 그래디언트(d11d12d21d22)에 로컬 그래디언트를 곱해서 구하게 되는데요. 각각의 로컬 그래디언트는 합성곱 필터 가중치로 연결된 입력값들이기 때문에 dw11은 x11d11+x12d12+x21d21+x22d22입니다.

https://ratsgo.github.io/deep%20learning/2017/04/05/CNNbackprop/